package com.meefo.meeting.persistence.service;

import com.meefo.meeting.persistence.bean.MeetingFile;
import com.meefo.meeting.persistence.bean.MeetingInfo;
import com.meefo.meeting.persistence.bean.SignInfo;
import net.sf.json.JSONException;
import net.sf.json.JSONObject;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;
import java.util.Map;

public interface MeetingService {
    /**
     * 根据id获取会议
     * @param meeting_id
     * @return
     */
    MeetingInfo getMeetingById(String meeting_id);
    //更新会议QR的地址
    void updateQrCode(MeetingInfo meetingInfo);

    /**
     * 创建会议，返回是否创建成功-true or false
     * @param subject
     * @param content
     * @param place
     * @param start_date 格式yyyy-mm-dd hh：ss
     * @param meeting_period （一级会议、二级会议、三级会议）
     * @param mtType
     * @param attendance_people
     * @param meeting_money
     * @param is_net_meeting 1:是   0:否
     * @param apply_unit
     * @param apply_unit_name
     * @param apply_user
     * @param apply_user_name
     * @return
     */
    Boolean saveMeeting(String subject,String content,String place,
        String start_date,String meeting_period,String mtType,Integer attendance_people,
        Float meeting_money,String is_net_meeting,String apply_unit,String apply_unit_name,
        String apply_user,String apply_user_name);

    /**
     * 根据指定信息查询相应的会议列表
     * @param apply_unit
     * @param subject
     * @param start_date
     * @param end_date
     * @return
     */
    List<MeetingInfo> queryMeetList(String apply_unit, String subject, String start_date, String end_date);

    /**
     * 根据ID查询会议信息返回会议对象信息、会议附件信息，如果会议已生成二维码返回签到人员信息
     * @param meeting_id
     * @return`
     */
    Map<String,Object> queryMeetInfo(String meeting_id);

    /**
     * 删除会议
     * @param meeting_id 会议信息id
     * @param delete_user 删除人员id
     * @return
     */
    Boolean deleteInfo(String meeting_id,String delete_user);


    //根据url获取包含用户的姓名和id的json
    JSONObject getUserJsonFormUrl(String callback_url) throws IOException, JSONException;


    /**
     * 扫码签到功能
     * @param meeting_id
     * @param sign_user
     * @param sign_user_name
     * @return
     */
    Boolean scanCode(String meeting_id,String sign_user,String sign_user_name);

    /**
     * 会议完结
     * @param meeting_id 会议ID
     * @param Files 会议完结文件
     * @param type 文件类型 1.会议前文件 2.会议后文件
     * @param create_user 创建人
     * @return
     */
    Boolean FileUpload(String meeting_id, MultipartFile Files[],String type,String create_user);

    /**
     * 查找所有参会人员的id
     * @param meeting_id
     * @return
     */
    List<SignInfo> queryAllSignedPersons(String meeting_id);

    /**
     * 查询会议文件
     * @param meeting_id
     * @param type
     * @param file_name
     * @return
     */
    List<MeetingFile> queryMeetingFileByMeetingIdOrFileNameOrType(String meeting_id,String type,String file_name);

    /**
     * 文件删除
     * @param meeting_id
     * @param create_user
     * @return
     */
    String deleteFile(String meeting_id,String create_user);

    /**
     * 初次请求，获取requestKey
     * @param appKey
     * @param secretKey
     * @return
     */
    String getSecretKey(String appKey,String secretKey,String requestTime);
//    验证 verify

    /**
     * 验证是否具有请求权限
     * @param appKey
     * @param requestKey
     * @param requestTime
     * @return
     */
    String verifyKeyIsTrue(String appKey,String requestKey);
}
